﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Coffee
{
//    Опишите базовый класс MenuItem.У него должно быть поле name и метод PrintToConsole(). 
//    Так же у класса должен быть конструктор, в котором задается значение для поля name.
//Опишите два производных класса Beverage и Snack
//Класс Beverage должен содержать три цены: small, medium и large.Метод PrintToConsole() 
//   должен выводитьимя и все три цены на экран.Также необходимо определить
//   конструктор для установки значений полей.
//Класс Snack содержит одно поле – Price.Метод PrintToConsole() должен выводить на экран
//  имя и цену.Объявите в мейне массив из 7 MenuItem.Наполните его данными.
//   В результате вы должны получить следующее:

    class Program
    {
        static void Main(string[] args)
        {
            List<MenuItem> menuItems = new List<MenuItem>();
            menuItems.Add(new Beverage("Espresso", 2.00, 3.00, 4.00 ));
            menuItems.Add(new Beverage("Cappucino", 2.99, 3.99, 4.99));
            menuItems.Add(new Beverage("House coffee", 1.25, 2.25, 3.25));
            menuItems.Add(new Beverage("Irish Coffee", 2.00, 3.00, 4.00));
            menuItems.Add(new Snack("Muffin", 20.00));
            menuItems.Add(new Snack("Croissan", 15.00));
            menuItems.Add(new Snack("Bagel", 12.00));

            foreach (var item in menuItems)
            {
                item.PrintToConsole();
            }
            Console.ReadLine();
        }


    }

    abstract class MenuItem
    {
       public string name;

        public MenuItem (string name)
        {
            this.name = name;
        }

        public string GetName
        {
            get { return name; }
            set
            {
                name = value;
            }
        }

        public abstract void PrintToConsole();
        
        
    }


    class Beverage : MenuItem
    {      
        private double small { get; set; }
        private double medium { get; set; }
        private double large { get; set; }


        public Beverage (string name,double small, double medium, double large) : base(name)
        {
            this.small = small;
            this.medium = medium;
            this.large = large;
        }

        public override void PrintToConsole()
        {
            Console.WriteLine( "{0} : small - {1}; medium - {2}; large - {3}", name, small, medium, large);        
        }
    }

    class Snack : MenuItem
    {
        private double price { get; set;}

        public Snack (string name, double price ) : base(name)
        {          
            this.price = price;          
        }

        public override void PrintToConsole()
        {
            Console.WriteLine("{0} - {1}", name, price);
        }
    }



}
